<?php
	// Abrimos la sesion del cliente
	session_start();
	// Comprobamos si es una peticion por POST
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		// Comprobamos si esta bien formulado el post
		if(isset($_POST['datosPostVerProductos'])){
			if(isset($_POST['peticionAjax'])){
				$datosPostVerProductos = $_POST['datosPostVerProductos'];
			}else{
				$datosPostVerProductos = json_decode($_POST['datosPostVerProductos'], true);
			}
			// strip_tags elimina codigo html por si lo hubiese, previene un posible ataqye de XSS (que se ejecute código
			// html en nuestro servidor enviado desde un formulario)
			$accion = strip_tags($datosPostVerProductos['accion']);
			$tokenCSRF = strip_tags($datosPostVerProductos['tokenCSRF']);
			$tipoFormulario = strip_tags($datosPostVerProductos['tipoFormulario']);
			$idComercio = $_SESSION['usuario'];
			//$tokenCSRF = strip_tags($datosFormAcceso['tokenCSRF']);
			//$tipoFormulario = strip_tags($datosFormAcceso['tipoFormulario']);

			// Comprobamos la igualdad de tokens, si no son iguales es que estamos ante un ataque CSRF
			if(!isset($_SESSION[$tipoFormulario]) || $tokenCSRF !== $_SESSION[$tipoFormulario]){
				// Ataque CSRF
				throw new RuntimeException('Ataque CSRF');
			}else{
				// Listar productos
				if($accion == 'listarProductos'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();
					$inicio = strip_tags($datosPostVerProductos['inicio']);
					$tamPagina = strip_tags($datosPostVerProductos['tamPagina']);
					$ordenacion = strip_tags($datosPostVerProductos['ordenacion']);
					$respuestaServidor = $dbConfiguracion -> obtenerProductos($idComercio, $inicio, $tamPagina, $ordenacion, false);
					
					echo json_encode($respuestaServidor);

				// Actualizar productos
				}else if($accion == 'actualizarProductos'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();

					// Vemos los campos a actualizar
					$datosProcesar = explode('&', $datosPostVerProductos['datosActualizar']);

					// Vemos los campos a actualizar
					$actualizarEstado = explode('=', $datosProcesar[0]);
					$idProducto = explode('=', $datosProcesar[1]);

					// Vemos si estamos actualizando el estado de un producto nada más
					if($actualizarEstado[1] == 'Si'){
						$respuestaServidor = $dbConfiguracion -> cambiarEstadoProducto($idComercio, $idProducto[1]);
					// Estamos actualizando el producto completo
					}else{
					}
										
					echo json_encode($respuestaServidor);

				// Registrar nuevo producto
				}else if($accion == 'registrarNuevoProducto'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();

					$imagen = strip_tags($datosPostVerProductos['imagen']);
					$descripcion = strip_tags($datosPostVerProductos['descripcion']);
					$precio = strip_tags($datosPostVerProductos['precio']);
					$iva = strip_tags($datosPostVerProductos['iva']);
					$descuento = strip_tags($datosPostVerProductos['descuento']);
					$estado = strip_tags($datosPostVerProductos['estado']);
					$respuestaServidor = $dbConfiguracion -> registrarNuevoProducto($idComercio, $imagen, $descripcion, $precio, $iva, $descuento, $estado);
					
					echo json_encode($respuestaServidor);
				
				// Eliminar producto
				}else if($accion == 'eliminarProducto'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();

					// Recuperamos el identificador del producto a eliminar
					$idProducto = strip_tags($datosPostVerProductos['idProducto']);
					
					$respuestaServidor = $dbConfiguracion -> eliminarProducto($idComercio, $idProducto);
					
					echo json_encode($respuestaServidor);

				/*************************** ADMINISTRACIÓN *******************************/
				
				// Listar productos por id
				}else if($accion == 'listarProductosAdministracion'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();
					$inicio = strip_tags($datosPostVerProductos['inicio']);
					$tamPagina = strip_tags($datosPostVerProductos['tamPagina']);
					$ordenacion = strip_tags($datosPostVerProductos['ordenacion']);
					$identificadorComercio = strip_tags($datosPostVerProductos['idComercio']);
					
					$respuestaServidor = $dbConfiguracion -> obtenerProductos($identificadorComercio, $inicio, $tamPagina, $ordenacion, true);
					
					echo json_encode($respuestaServidor);
				
				// Actualizar productos por id
				}else if($accion == 'actualizarProductosAdministracion'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();

					// Vemos los campos a actualizar
					$datosProcesar = explode('&', $datosPostVerProductos['datosActualizar']);

					// Vemos los campos a actualizar
					$actualizarEstado = explode('=', $datosProcesar[0]);
					$idProducto = explode('=', $datosProcesar[1]);
					$identificadorComercio = strip_tags($datosPostVerProductos['idComercio']);

					// Vemos si estamos actualizando el estado de un producto nada más
					if($actualizarEstado[1] == 'Si'){
						$respuestaServidor = $dbConfiguracion -> cambiarEstadoProducto($identificadorComercio, $idProducto[1]);
					// Estamos actualizando el producto completo
					}else{
					}
										
					echo json_encode($respuestaServidor);

				// Eliminar producto
				}else if($accion == 'eliminarProductoAdministracion'){
					require_once('../bd/db_conectorMySQL.php');
		    		// Conectamos la base de datos
					$dbConfiguracion = new DB_ConectorMySQL();

					// Recuperamos el identificador del producto a eliminar
					$idProducto = strip_tags($datosPostVerProductos['idProducto']);
					$identificadorComercio = strip_tags($datosPostVerProductos['idComercio']);
					
					$respuestaServidor = $dbConfiguracion -> eliminarProducto($identificadorComercio, $idProducto);
					
					echo json_encode($respuestaServidor);
				}
			}
		}
	}
?>